#pragma once

#include "..\Common.h"

class Light
{
public:

  Light(void)
  {
  }

  virtual ~Light(void)
  {
  }

  XMVECTOR Position() { return XMLoadFloat3(&position); }
  void Position(XMFLOAT3 pos) { position = pos; }

  XMVECTOR DiffuseColor() { return XMLoadFloat3(&lightDiffuseColor); }
  void DiffuseColor(XMFLOAT3 value) { lightDiffuseColor = value; }

  XMVECTOR SpecularColor() { return XMLoadFloat3(&lightSpecularColor); } // intensity multiplier
  void SpecularColor(XMFLOAT3 value) { lightSpecularColor = value; }

  float Distance() { return distance; }
  void Distance(float value) { distance = value; }

  float DistanceSquared() { return distance * distance; }

  XMVECTOR AmbientColor() { return XMLoadFloat3(&ambientLightColor); }
  void AmbientColor(XMFLOAT3 value) { ambientLightColor = value; }
  
private:
  XMFLOAT3 position;
  XMFLOAT3 lightDiffuseColor; // intensity multiplier
  XMFLOAT3 lightSpecularColor; // intensity multiplier
  float distance;
  XMFLOAT3 ambientLightColor;  
};

